//使用建立软链接的方法就要在头文件上使用软连接名字：
#include"myinc/mymath.h"

//使用添加到库或者使用gcc编译的时候指定的方法就直接包含头文件接即可
//#include"mymath.h"
//我们想要使用自己写的静态库中的头文件和实现的函数，就要在编译当前文件的时候，告诉编译器我们的头文件和库的源文件的路径，否则编译器无法找到
int main()
{
  int a=add(1,2);
  printf("%d\n",a);
  return 0;
}

//gcc main.c -I ./lib/include/ -L ./lib/mymathlib/ -lmymath  
//         -I  提示编译器头文件的位置   -L 提示编译器链接库里源文件的位置   -l 指定目标库是mymath,注意：mymath是libmymath.a去掉首尾得到的库名字，有时候这个库文件地下有很多库所以要指定库名字

//还有一种可以不用指定头文件和静态库的路径的方法：就是把这两个文件分别加入到系统默认搜索的路径中去，这样编译器寻找的时候就可以直接去对应位置找到
//这也是我们安装别人的库的原理，安装别人的库就可以使用就是因为安装的时候，把别人的库的路径放进了系统默认路径下，卸载一个库也只需要从默认路径下移除对应的文件即可

//添加到默认路径下的方法：
//1,添加我们的头文件到系统默认的头文件中：sudo cp lib/include/mymath.h /usr/include/
//2，添加我们的库到系统的库中： sudo cp lib/mymathlib/libmymath.a /lib64/
//这个方法无论动静态库都可以使用，也是最根本有效的方法，直接把头文件和库加入到系统默认的路径中
//注意：虽然添加到了系统默认的库但是还是要使用-l指定使用的库，否则会报链接错：gcc main.c -lmymath
//所以以后在使用第三方库的时候要带-l，有多个库可以指定多个-l链接的库


//所以我们也可以理解errno的本质，就是系统在头文件声明的全局变量，自己的库函数出错的时候就把对应的错误码传给这个全局变量返回


//如果想要把我们自己的库给别人使用：
//1,我们把源代码打包成库和.h头文件给他即可


//大部分时候我们都是把安装的库放在默认路径下使用，但是我们现在学习自己制作库的方法也值得学习


//再补充弄个一种方法可以不用指定文件的方法：添加软连接到系统默认路径，软链接本质就是一个路径，这样访问默认路径下的软连接就可以访问我们的头文件和库
//1，添加头文件的软连接到系统的头文件路径下：sudo ln -s /home/hxk/lesson/mylib/static_lib/mylib/lib/include /usr/include/myinc
//2，添加库的软连接到系统默认库：sudo ln -s /home/hxk/lesson/mylib/static_lib/mylib/lib/mymathlib/libmymath.a /lib64/libmymath.a
//软连接本质就是绝对路径，编译器在默认路径下寻找到软连接的时候就会跳转到对应的路径下去寻找







